package com.ruoyi.quartz.task;

/**
 * Modbus输入参数类
 */
public class ModbusInput {
    private byte stationNumber;    // 站号
    private byte functionCode;    // 功能码
    private String address;       // 地址
    private DataType dataType;    // 数据类型
    
    /**
     * 构造函数
     * @param stationNumber 站号
     * @param functionCode 功能码
     * @param address 地址
     * @param length 数据长度，用于确定数据类型
     */
    public ModbusInput(byte stationNumber, byte functionCode, String address, int length) {
        this.stationNumber = stationNumber;
        this.functionCode = functionCode;
        this.address = address;
        
        // 根据长度确定数据类型
        switch (length) {
            case 1:
                this.dataType = DataType.Byte;
                break;
            case 2:
                this.dataType = DataType.Float;
                break;
            case 4:
                this.dataType = DataType.Double;
                break;
            default:
                this.dataType = DataType.Float;
                break;
        }
    }
    
    public byte getStationNumber() {
        return stationNumber;
    }
    
    public void setStationNumber(byte stationNumber) {
        this.stationNumber = stationNumber;
    }
    
    public byte getFunctionCode() {
        return functionCode;
    }
    
    public void setFunctionCode(byte functionCode) {
        this.functionCode = functionCode;
    }
    
    public String getAddress() {
        return address;
    }
    
    public void setAddress(String address) {
        this.address = address;
    }
    
    public DataType getDataType() {
        return dataType;
    }
    
    public void setDataType(DataType dataType) {
        this.dataType = dataType;
    }
}